<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <title>servlet/filter/listener/interceptor区别与联系 - 丁成云  廊坊师范学院信息技术提高班第六期
        - 博客频道 - CSDN.NET</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="由于最近两个月工作比较清闲，个人也比较“上进”，利用工作空余时间，也继续学习了一下，某天突然想起struts2和struts1的区别的时候，发现为什么struts1要用servlet，而struts2要用filter呢？一时又发现，servlet和filter有什么区别呢？于是看了看web.xml，一时又发现，咦，servlet、filter、listener？还有个interceptor？对于这" />
    <script src="http://static.blog.csdn.net/scripts/jquery.js" type="text/javascript"></script>
    <script type="text/javascript" src="http://static.blog.csdn.net/scripts/ad.js?v=1.1"></script>
    <link rel="Stylesheet" type="text/css" href="http://static.blog.csdn.net/skin/dark1/css/style.css?v=1.1" />
    <link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="/sundenskyqq/rss/list" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <link type="text/css" rel="stylesheet" href="http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/default.css" />

</head>
<body>
    <script src="http://csdnimg.cn/pubnav/js/pub_topnav_2011.js" type="text/javascript"></script>
    <div id="container">
        <div id="header">
    <div class="header">
        <div id="blog_title">
            <h1>
                <a href="http://blog.csdn.net/sundenskyqq">丁成云  廊坊师范学院信息技术提高班第六期</a></h1>
            <h2>踏雪无痕</h2>
            <div class="clear">
            </div>
        </div>
        <div class="clear">
        </div>
    </div>
</div>
<div id="navigator">
    <div class="navigator_bg">
    </div>
    <div class="navigator">
        <ul>
                <li id="btnContents"><a href="http://blog.csdn.net/sundenskyqq?viewmode=contents"><span>
                    <img src="http://static.blog.csdn.net/images/ico_list.gif">目录视图</span></a></li>
                <li id="btnView"><a href="http://blog.csdn.net/sundenskyqq?viewmode=list"><span>
                    <img src="http://static.blog.csdn.net/images/ico_summary.gif">摘要视图</span></a></li>
                <li id="btnRss"><a href="http://blog.csdn.net/sundenskyqq/rss/list"><span>
                    <img src="http://static.blog.csdn.net/images/ico_rss.gif">订阅</span></a></li>
</ul>
    </div>
</div>
<script type="text/javascript">
    var username = "sundenskyqq";
    var _blogger = username;
    var blog_address = "http://blog.csdn.net/sundenskyqq";
    var static_host = "http://static.blog.csdn.net";
    var currentUserName = "";
</script>

        <div id="body">
            <div id="main">
                <div class="main">
<div class="notice tracking-ad" data-mod='popu_3' > 

<a href="http://huiyi.csdn.net/m/ticket/handsel_ticket/piao/mountain623/24/2013112779945" target="_blank">
<font color=blue>2013中国大数据大会赠票申请 </font></a>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<a href="http://hero.pongo.cn/Question/Details?ID=168&ExamID=163" target="_blank"><font color=red>文思海辉第一届在线编程大赛
</font></a>

&nbsp;&nbsp;&nbsp;&nbsp;

<a href="http://blog.csdn.net/csdn_ask/article/details/16943685"target="_blank">
<font color=blue>消灭0回答，赢下载分
 </font></a>

&nbsp;&nbsp;&nbsp;&nbsp;


<a href="http://newsletter.csdn.net/show_book/show_book_list?type=5"target="_blank">
<font color=red>订阅CSDN社区周刊，及时了解社区精华内容
 </font></a>

&nbsp;&nbsp;&nbsp;&nbsp;


<a href="http://blog.csdn.net/blogdevteam/article/details/16943989"target="_blank">
<font color=blue>办公大师系列经典丛书 诚聘译者
 </font></a>

</div>                    <link href="http://static.blog.csdn.net/css/comment1.css" type="text/css" rel="stylesheet" />
<link href="http://static.blog.csdn.net/css/style1.css" type="text/css" rel="stylesheet" />
<div id="article_details" class="details">
    <div class="article_title">
    <span class="ico ico_type_Original"></span>
    <h3>
        <span class="link_title"><a href="/sundenskyqq/article/details/8549932">
        servlet/filter/listener/interceptor区别与联系
        </a></span>
    </h3>
</div>

    <div class="article_manage">
        <span class="link_categories">
        分类：
            <a href="/sundenskyqq/article/category/777072">J2EE</a> 
        </span>
    <span class="link_postdate">2013-01-29 11:06</span>
    <span class="link_view" title="阅读次数">1387人阅读</span>
    <span class="link_comments" title="评论次数"><a href="#comments">评论</a>(2)</span>
    <span class="link_collect"><a href="javascript:void(0);" onclick="javascript:collectArticle('servlet/filter/listener/interceptor区别与联系','8549932');return false;" title="收藏">收藏</a></span>
    <span class="link_report"><a href="#report"  onclick="javascript:report(8549932,2);return false;" title="举报">举报</a></span>
    
</div>

    
<div id="article_content" class="article_content">

<p>&nbsp; &nbsp; &nbsp; &nbsp; 由于最近两个月工作比较清闲，个人也比较“上进”，利用工作空余时间，也继续学习了一下，某天突然想起struts2和struts1的区别的时候，发现为什么struts1要用servlet，而struts2要用filter呢？一时又发现，servlet和filter有什么区别呢？于是看了看web.xml，一时又发现，咦，servlet、filter、listener？还有个interceptor？对于这几个概念，本应是初学者就掌握的东东了，可惜本人基础学的不好，只能是现在补课。于是就有了这篇博客。</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;慢慢来吧，需要补课的地方还有很多很多呀。初学的时候都不知道他们存在呢。呵呵。</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;下面从几个方面阐述一下题目中四个概念的区别与联系：</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1、概念</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2、生命周期</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3、职责</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4、执行过程</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;一、概念：</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1、servlet：servlet是一种运行服务器端的java应用程序，具有独立于平台和协议的特性，并且可以动态的生成web页面，它工作在客户端请求与服务器响应的中间层。</p>
<p><span style="white-space:pre"></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2、filter：filter是一个可以复用的代码片段，可以用来转换HTTP请求、响应和头信息。Filter不像Servlet，它不能产生一个请求或者响应，它只是修改对某一资源的请求，或者修改从某一的响应。</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; 3、listener：监听器，从字面上可以看出listener主要用来监听只用。通过listener可以监听web服务器中某一个执行动作，并根据其要求作出相应的响应。通俗的语言说就是在application，session，request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4、interceptor：<span style="font-family:Verdana,Arial,Helvetica,sans-serif; font-size:13px; line-height:19px; background-color:rgb(254,254,242)">是在面向切面编程的，就是在你的service或者一个方法，前调用一个方法，或者在方法后调用一个方法，比如动态代理就是拦截器的简单实现，在你调用方法前打印出字符串（或者做其它业务逻辑的操作），也可以在你调用方法后打印出字符串，甚至在你抛出异常的时候做业务逻辑的操作。</span></p>
<p><span style="font-family:Verdana,Arial,Helvetica,sans-serif; font-size:13px; line-height:19px; background-color:rgb(254,254,242)">&nbsp; &nbsp; &nbsp; 5、servlet、filter、listener是配置到web.xml中，interceptor不配置到web.xml中，struts的拦截器配置到struts.xml中。spring的拦截器配置到spring.xml中。&nbsp;</span><br style="margin:0px; padding:0px; font-family:Verdana,Arial,Helvetica,sans-serif; font-size:13px; line-height:19px; background-color:rgb(254,254,242)">
</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; 二、生命周期：</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; 1、servlet：servlet的生命周期始于它被装入web服务器的内存时，并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器，一般不会从web服务器内存中删除，直至web服务器关闭或重新结束。<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">(1)、装入：启动服务器时加载Servlet的实例；&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; (2)、初始化：web服务器启动时或web服务器接收到请求时，或者两者之间的某个时刻启动。初始化工作有init（）方法负责执行完成；&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; (3)、调用：从第一次到以后的多次访问，都是只调用doGet()或doPost()方法；&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; (4)、销毁：停止服务器时调用destroy()方法，销毁实例。&nbsp;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359424209_4366.png" alt=""></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2、filter：<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">（一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy()，空实现也行）&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1)、启动服务器时加载过滤器的实例，并调用init()方法来初始化实例；&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(2)、每一次请求时都只调用方法doFilter()进行处理；&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(3)、停止服务器时调用destroy()方法，销毁实例。</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3、listener：类&#20284;于servlet和filter</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:rgb(68,68,68); font-size:16px; line-height:24px">web.xml&nbsp;的加载顺序是：context- param&nbsp;-&gt;&nbsp;listener&nbsp;-&gt;&nbsp;filter&nbsp;-&gt;&nbsp;servlet&nbsp;</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp;4、interceptor：以struts的拦截器为例，加载了struts.xml以后，初始化相应拦截器。当action请求来时调用intercept方法，服务器停止销毁interceptor。</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp;三、职责</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp;1、servlet：</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp; 创建并返回一个包含基于客户请求性质的动态内容的完整的html页面；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 创建可嵌入到现有的html页面中的一部分html页面（html片段）；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 读取客户端发来的隐藏数据；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 读取客户端发来的显示数据；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 与其他服务器资源（包括数据库和java的应用程序）进行通信；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 通过状态代码和响应头向客户端发送隐藏数据。</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp;2、filter：</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(68,68,68); font-size:16px; line-height:24px">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;filter能够在一个请求到达servlet之前预处理用户请求，也可以在离开servlet时处理http响应：<br>
&nbsp; &nbsp; &nbsp; &nbsp; 在执行servlet之前，首先执行filter程序，并为之做一些预处理工作；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 根据程序需要修改请求和响应；<br>
&nbsp; &nbsp; &nbsp; &nbsp; 在servlet被调用之后截获servlet的执行</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3、listener：职责如概念。</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;servlet2.4规范中提供了8个listener接口，可以将其分为三类，分别如下：<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;第一类：与servletContext有关的listner接口。包括：ServletContextListener、ServletContextAttributeListener<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;第二类：与HttpSession有关的Listner接口。包括：HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HttpSessionActivationListener；<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;第三类：与ServletRequest有关的Listener接口，包括：ServletRequestListner、ServletRequestAttributeListener</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 4、interceptor：与过滤器十分相&#20284;，通过层层拦截，处理用户的请求和响应。</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><br>
</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 备注：<span style="color:rgb(51,51,51); font-family:verdana,Arial,Helvetica,sans-serif; font-size:12px; line-height:23px">web.xml 的加载顺序是：</span><span style="margin:0px; padding:0px; color:rgb(51,51,51); font-family:verdana,Arial,Helvetica,sans-serif; font-size:12px; line-height:23px">context-param
 -&gt; listener -&gt; filter -&gt; servlet</span><span style="color:rgb(51,51,51); font-family:verdana,Arial,Helvetica,sans-serif; font-size:12px; line-height:23px">&nbsp;。了解了这几个概念的区别以后，不难理论这个加载顺序了。</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><br>
</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 四、几个区别：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">1,servlet 流程是短的，url传来之后，就对其进行处理，之后返回或转向到某一自己指定的页面。它主要用来在</span><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;业务处理之前进行控制.</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 2,filter 流程是线性的， url传来之后，检查之后，可保持原来的流程继续向下执行，被下一个filter, servlet接收等，而servlet 处理之后，不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去，或者主导流程，而servlet的功能主要用来主导流程。</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;filter可用来进行字符编码的过滤，检测用户是否登陆的过滤，禁止页面缓存等</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 3, servlet,filter都是针对url之类的，而listener是针对对象的操作的，如session的创建，session.setAttribute的发生，在这样的事件发生时做一些事情。</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;&nbsp;&nbsp;&nbsp; 可用来进行：Spring整合Struts,为Struts的action注入属性，web应用定时任务的实现，在线人数的统计等</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp;4，interceptor 拦截器，类&#20284;于filter,不过在struts.xml中配置，不是在web.xml,并且不是针对URL的，而是针对action,当页面提交action时，进行过滤操作，相当于struts1.x提供的plug-in机制，可以看作，前者是struts1.x自带的filter,而interceptor
 是struts2 提供的filter.</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;&nbsp;&nbsp; 与filter不同点：（１）不在web.xml中配置，而是在struts.xml中完成配置，与action在一起</span><br style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">
<span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( 2&nbsp; ) 可由action自己指定用哪个interceptor 来在接收之前做事</span></span><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp;
 &nbsp;&nbsp;</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 5，struts2中的过滤器和拦截器的区别与联系：</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; （1）、拦截器是基于java反射机制的，而过滤器是基于函数回调的。<br>
&nbsp; &nbsp; &nbsp; （2）、过滤器依赖与servlet容器，而拦截器不依赖与servlet容器。<br>
&nbsp; &nbsp; &nbsp; （3）、拦截器只能对Action请求起作用，而过滤器则可以对几乎所有请求起作用。<br>
&nbsp; &nbsp; &nbsp; （4）、拦截器可以访问Action上下文、&#20540;栈里的对象，而过滤器不能。<br>
&nbsp; &nbsp; &nbsp; （5）、在Action的生命周期中，拦截器可以多次调用，而过滤器只能在容器初始化时被调用一次。</span></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; 五、执行流程图：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1、servlet：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359428828_1624.png" alt=""><br>
</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2、filter：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359428864_1228.png" alt=""></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359428942_1310.png" alt=""><br>
</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3、listener：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359428988_1436.png" alt=""></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4、interceptor：</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://img.my.csdn.net/uploads/201301/29/1359429011_3216.png" width="700" height="500" alt=""></span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p><span style="color:rgb(69,69,69); font-family:tahoma,helvetica,arial; font-size:14px; line-height:21px"><br>
</span></p>

</div>



<!-- Baidu Button BEGIN -->
<div id="bdshare" class="bdshare_t bds_tools get-codes-bdshare" style="float: right;">
<a class="bds_qzone"></a>
<a class="bds_tsina"></a>
<a class="bds_tqq"></a>
<a class="bds_renren"></a>
<a class="bds_t163"></a>
<span class="bds_more">更多</span>
<a class="shareCount"></a>
</div>
<!-- Baidu Button END -->


<!--192.168.100.33-->
<div class="article_next_prev">
            <li class="prev_article"><span>上一篇：</span><a href="/sundenskyqq/article/details/8538158">反省这两个月，沉淀沉淀心态</a></li>
            <li class="next_article"><span>下一篇：</span><a href="/sundenskyqq/article/details/8552623">MVC框架比较-struts1、struts2、springMVC</a></li>
</div>

<!-- Baidu Button BEGIN -->
<script type="text/javascript" id="bdshare_js" data="type=tools&amp;uid=1536434" ></script>
<script type="text/javascript" id="bdshell_js"></script>
<script type="text/javascript">
    document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)
</script>
<!-- Baidu Button END -->

        <div id="digg" ArticleId="8549932">
            <dl id="btnDigg" class="digg digg_disable">
                <dt>顶</dt>
                <dd>1</dd>
            </dl>
            <dl id="btnBury" class="digg digg_disable">
                <dt>踩</dt>
                <dd>0</dd>
            </dl>
        </div>
</div>
    <div id="ad_cen">
        <script type="text/javascript">            BAIDU_CLB_SLOT_ID = "117306";</script>
        <script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script>
    </div>
    <script type="text/javascript">
        //new Ad(4, 'ad_cen');
    </script>
<div id="comment_title" class="panel_head">
    查看评论<a name="comments"></a></div>
<div id="comment_list">
</div>
<div id="comment_bar">
</div>
<div id="comment_form">
</div>
<div class="announce">
    * 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场<a name="reply"></a><a name="quote"></a></div>
<script type="text/javascript">
    var fileName = '8549932';
    var commentscount = 2;
    var islock = false
</script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/comment.js"></script>
    <div id="ad_bot">
    </div>
    <script type="text/javascript">
    new Ad(5, 'ad_bot');
    </script>
<div id="report_dialog">
</div>
<div id="d-top" style="display: none;">
    <a id="d-top-a" href="#" title="回到顶部">
        <img src="http://static.blog.csdn.net/images/top.png" alt="TOP" /></a>
</div>
<script type="text/javascript">
    $(function ()
    {
        var d_top = $('#d-top');
        document.onscroll = function ()
        {
            var scrTop = (document.body.scrollTop || document.documentElement.scrollTop);
            if (scrTop > 500)
            {
                d_top.show();
            } else
            {
                d_top.hide();
            }
        }
        $('#d-top-a').click(function ()
        {
            scrollTo(0, 0);
            this.blur();
            return false;
        });
    });
  
</script>
<style type="text/css">
    .tag_list
    {
        background: none repeat scroll 0 0 #FFFFFF;
        border: 1px solid #D7CBC1;
        color: #000000;
        font-size: 12px;
        line-height: 20px;
        list-style: none outside none;
        margin: 10px 2% 0 1%;
        padding: 1px;
    }
    .tag_list h5
    {
        background: none repeat scroll 0 0 #E0DBD3;
        color: #47381C;
        font-size: 12px;
        height: 24px;
        line-height: 24px;
        padding: 0 5px;
        margin: 0;
    }
    .tag_list h5 a
    {
        color: #47381C;
    }
    .classify
    {
        margin: 10px 0;
        padding: 4px 12px 8px;
    }
    .classify a
    {
        margin-right: 20px;
        white-space: nowrap;
    }
</style>
<div class="tag_list">
    <h5>
        <a href="http://www.csdn.net/tag/" target="_blank">核心技术类目</a></h5>
    <div class="classify">
        <a title="全部主题" href="http://www.csdn.net/tag" target="_blank" onclick="LogClickCount(this,336);">
            全部主题</a> <a title="数据挖掘" href="http://www.csdn.net/tag/数据挖掘" target="_blank" onclick="LogClickCount(this,336);">
                数据挖掘</a> <a title="SOA" href="http://www.csdn.net/tag/soa" target="_blank" onclick="LogClickCount(this,336);">
                    SOA</a> <a title="UML" href="http://www.csdn.net/tag/uml" target="_blank" onclick="LogClickCount(this,336);">
                        UML</a> <a title="开放平台" href="http://www.csdn.net/tag/开放平台" target="_blank" onclick="LogClickCount(this,336);">
                            开放平台</a> <a title="HTML5" href="http://www.csdn.net/tag/HTML5" target="_blank" onclick="LogClickCount(this,336);">
                                HTML5</a> <a title="开源" href="http://www.csdn.net/tag/开源" target="_blank" onclick="LogClickCount(this,336);">
                                    开源</a> <a title="移动开发" href="http://www.csdn.net/tag/移动开发" target="_blank" onclick="LogClickCount(this,336);">
                                        移动开发</a> <a title="iOS" href="http://www.csdn.net/tag/iOS" target="_blank" onclick="LogClickCount(this,336);">
                                            iOS</a> <a title="Android" href="http://www.csdn.net/tag/android" target="_blank"
                                                onclick="LogClickCount(this,336);">Android</a>
        <a title="移动游戏" href="http://www.csdn.net/tag/移动游戏" target="_blank" onclick="LogClickCount(this,336);">
            移动游戏</a> <a title="Windows Phone" href="http://www.csdn.net/tag/Windows Phone" target="_blank"
                onclick="LogClickCount(this,336);">Windows Phone</a> <a title="JavaScript" href="http://www.csdn.net/tag/JavaScript"
                    target="_blank" onclick="LogClickCount(this,336);">JavaScript</a> <a title="CSS"
                        href="http://www.csdn.net/Tag/CSS" target="_blank" onclick="LogClickCount(this,336);">
                        CSS</a> <a title="游戏引擎" href="http://www.csdn.net/tag/游戏引擎" target="_blank" onclick="LogClickCount(this,336);">
                            游戏引擎</a> <a title="云计算" href="http://www.csdn.net/tag/云计算" target="_blank" onclick="LogClickCount(this,336);">
                                云计算</a> <a title="大数据" href="http://www.csdn.net/tag/大数据" target="_blank" onclick="LogClickCount(this,336);">
                                    大数据</a> <a title="Hadoop" href="http://www.csdn.net/tag/Hadoop" target="_blank" onclick="LogClickCount(this,336);">
                                        Hadoop</a> <a title="OpenStack" href="http://www.csdn.net/tag/OpenStack" target="_blank"
                                            onclick="LogClickCount(this,336);">OpenStack</a>
        <a title="云平台" href="http://www.csdn.net/tag/云平台" target="_blank" onclick="LogClickCount(this,336);">
            云平台</a> <a title="PHP" href="http://www.csdn.net/tag/PHP" target="_blank" onclick="LogClickCount(this,336);">
                PHP</a> <a title="MongoDB" href="http://www.csdn.net/tag/MongoDB" target="_blank"
                    onclick="LogClickCount(this,336);">MongoDB</a> <a title="JSON" href="http://www.csdn.net/tag/JSON"
                        target="_blank" onclick="LogClickCount(this,336);">JSON</a> <a title="Xcode" href="http://www.csdn.net/tag/Xcode"
                            target="_blank" onclick="LogClickCount(this,336);">Xcode</a>
        <a title="Node.js" href="http://www.csdn.net/tag/Node.js" target="_blank" onclick="LogClickCount(this,336);">
            Node.js</a> <a title="前端开发" href="http://www.csdn.net/tag/前端开发" target="_blank" onclick="LogClickCount(this,336);">
                前端开发</a> <a title="神经网络" href="http://www.csdn.net/tag/神经网络" target="_blank" onclick="LogClickCount(this,336);">
                    神经网络</a> <a title="安全" href="http://www.csdn.net/tag/安全" target="_blank" onclick="LogClickCount(this,336);">
                        安全</a> <a title="Java" href="http://www.csdn.net/tag/Java" target="_blank" onclick="LogClickCount(this,336);">
                            Java</a> <a title=".NET" href="http://www.csdn.net/tag/.NET" target="_blank" onclick="LogClickCount(this,336);">
                                .NET</a> <a title="MySQL" href="http://www.csdn.net/tag/MySQL" target="_blank" onclick="LogClickCount(this,336);">
                                    MySQL</a> <a title="textview" href="http://www.csdn.net/tag/textview" target="_blank"
                                        onclick="LogClickCount(this,336);">textview</a>
        <a title="BigTable" href="http://www.csdn.net/tag/BigTable" target="_blank" onclick="LogClickCount(this,336);">
            BigTable</a> <a title="web框架" href="http://www.csdn.net/tag/web框架" target="_blank"
                onclick="LogClickCount(this,336);">web框架</a> <a title="SQL" href="http://www.csdn.net/tag/SQL"
                    target="_blank" onclick="LogClickCount(this,336);">SQL</a> <a title="Redis" href="http://www.csdn.net/tag/Redis"
                        target="_blank" onclick="LogClickCount(this,336);">Redis</a> <a title="CouchDB" href="http://www.csdn.net/tag/CouchDB"
                            target="_blank" onclick="LogClickCount(this,336);">CouchDB</a>
        <a title="Linux" href="http://www.csdn.net/tag/Linux" target="_blank" onclick="LogClickCount(this,336);">
            Linux</a> <a title="可穿戴计算" href="http://www.csdn.net/tag/可穿戴计算" target="_blank" onclick="LogClickCount(this,336);">
                可穿戴计算</a> <a title="NoSQL" href="http://www.csdn.net/tag/NoSQL" target="_blank" onclick="LogClickCount(this,336);">
                    NoSQL</a> <a title="Ruby" href="http://www.csdn.net/tag/Ruby" target="_blank" onclick="LogClickCount(this,336);">
                        Ruby</a> <a title="API" href="http://www.csdn.net/tag/API" target="_blank" onclick="LogClickCount(this,336);">
                            API</a> <a title="GPL" href="http://www.csdn.net/tag/GPL" target="_blank" onclick="LogClickCount(this,336);">
                                GPL</a> <a title="XAML" href="http://www.csdn.net/tag/XAML" target="_blank" onclick="LogClickCount(this,336);">
                                    XAML</a> <a title="ASP.NET" href="http://www.csdn.net/tag/ASP.NET" target="_blank"
                                        onclick="LogClickCount(this,336);">ASP.NET</a> <a title="前端开发" href="http://www.csdn.net/tag/前端开发"
                                            target="_blank" onclick="LogClickCount(this,336);">前端开发</a>
        <a title="虚拟化" href="http://www.csdn.net/tag/虚拟化" target="_blank" onclick="LogClickCount(this,336);">
            虚拟化</a> <a title="框架" href="http://www.csdn.net/tag/框架" target="_blank" onclick="LogClickCount(this,336);">
                框架</a> <a title="机器学习" href="http://www.csdn.net/tag/机器学习" target="_blank" onclick="LogClickCount(this,336);">
                    机器学习</a> <a title="数据中心" href="http://www.csdn.net/tag/数据中心" target="_blank" onclick="LogClickCount(this,336);">
                        数据中心</a> <a title="IE10" href="http://www.csdn.net/tag/IE10" target="_blank" onclick="LogClickCount(this,336);">
                            IE10</a> <a title="敏捷" href="http://www.csdn.net/tag/敏捷" target="_blank" onclick="LogClickCount(this,336);">
                                敏捷</a> <a title="集群" href="http://www.csdn.net/tag/集群" target="_blank" onclick="LogClickCount(this,336);">
                                    集群</a>
    </div>
</div>

                    <div class="clear">
                    </div>
                </div>
            </div>
            <div id="side">
    <div class="side">
<div id="panel_Profile" class="panel">
<ul class="panel_head"><span>个人资料</span></ul>
<ul class="panel_body profile">
<div id="blog_userface">
    <a href="http://my.csdn.net/sundenskyqq" target="_blank">
    <img src="http://avatar.csdn.net/2/B/B/1_sundenskyqq.jpg" title="访问我的空间" style="max-width:90%"/>
    </a>
    <br />
    <span><a href="http://my.csdn.net/sundenskyqq" class="user_name" target="_blank">sundenskyqq</a></span>
</div>
<div class="interact">
<a href="javascript:void(0);" class="attent" id="span_add_follow" title="[加关注]"></a>
<a href="javascript:void(0);" class="letter" onclick="loginto(1)" title="[发私信]"></a>
</div>
<div id="blog_medal">
</div>
<ul id="blog_rank">
    <li>访问：<span>134712次</span></li>
    <li>积分：<span>4118分</span></li>
    <li>排名：<span>第1490名</span></li>
</ul>
<ul id="blog_statistics">
    <li>原创：<span>209篇</span></li>
    <li>转载：<span>30篇</span></li>
    <li>译文：<span>0篇</span></li>
    <li>评论：<span>714条</span></li>
</ul>
</ul>
</div>


<div class="panel" id="panel_Search">
    <ul class="panel_head"><span>文章搜索</span></ul>
    <ul class="panel_body">
        <form id="frmSearch" action="http://so.csdn.net/search" class="form_search" target="_blank">
        <span><input id="inputSearch" type="text" class="blogsearch" title="请输入关键字" /></span>
        <input id="btnSubmit" type="submit" value="搜索" title="search in blog" />
        <input type="hidden" name="q" id="inputQ" />
        <input type="hidden" name="t" value="blog" />
        <a id="btnSearchBlog" target="_blank"></a>
        </form>
    </ul>
</div><div id="panel_Category" class="panel">
<ul class="panel_head"><span>文章分类</span></ul>
<ul class="panel_body">
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/776966">总结</a><span>(48)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/777072">J2EE</a><span>(44)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/593465">uml学习</a><span>(7)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/784948">数据库</a><span>(8)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/778535">设计模式学习</a><span>(3)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/776796">随想</a><span>(32)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/1068187">数据结构与算法</a><span>(2)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/1089923">中间件</a><span>(20)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/1172351">SSH</a><span>(9)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/1192303">小技术</a><span>(20)</span>
</li>
<li>
<a href="http://blog.csdn.net/sundenskyqq/article/category/1695613">项目管理相关</a><span>(6)</span>
</li>
</ul>
</div><div id="panel_Archive" class="panel">
<ul class="panel_head"><span>文章存档</span></ul>
<ul class="panel_body">
<div id="archive_list">
<!--归档统计-->
<li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/11">2013年11月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/10">2013年10月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/09">2013年09月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/08">2013年08月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/07">2013年07月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/06">2013年06月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/05">2013年05月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/04">2013年04月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/03">2013年03月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/02">2013年02月</a><span>(5)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2013/01">2013年01月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/12">2012年12月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/11">2012年11月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/10">2012年10月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/09">2012年09月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/08">2012年08月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/07">2012年07月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/06">2012年06月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/05">2012年05月</a><span>(14)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/04">2012年04月</a><span>(7)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/03">2012年03月</a><span>(10)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/02">2012年02月</a><span>(9)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2012/01">2012年01月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/12">2011年12月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/11">2011年11月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/10">2011年10月</a><span>(3)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/09">2011年09月</a><span>(6)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/08">2011年08月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/07">2011年07月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/06">2011年06月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/05">2011年05月</a><span>(15)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/04">2011年04月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/03">2011年03月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/02">2011年02月</a><span>(11)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2011/01">2011年01月</a><span>(7)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2010/08">2010年08月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2010/06">2010年06月</a><span>(3)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2010/04">2010年04月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2010/02">2010年02月</a><span>(5)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2010/01">2010年01月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2009/12">2009年12月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2009/11">2009年11月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2009/09">2009年09月</a><span>(11)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2009/08">2009年08月</a><span>(6)</span></li><li><a href="http://blog.csdn.net/sundenskyqq/article/month/2009/07">2009年07月</a><span>(2)</span></li>
</div>
</ul>
</div>
<div id="hotarticls" class="panel">
<ul class="panel_head"><span>阅读排行</span></ul>
<ul class="panel_body itemlist">
<li>
<a href="/sundenskyqq/article/details/7522077" title="foxmail替代outlook完成邮件管理、时间管理（谷歌日历同步）、rss订阅">foxmail替代outlook完成邮件管理、时间管理（谷歌日历同步）、rss订阅</a><span>(6377)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/6799038" title="springMVC 注解方式实现全程+文件上传">springMVC 注解方式实现全程+文件上传</a><span>(5384)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/8108438" title="spring3.0定时任务 （一） 简单示例">spring3.0定时任务 （一） 简单示例</a><span>(2859)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/5472248" title="js文件打不开，js文件无法在vs里运行（解决）">js文件打不开，js文件无法在vs里运行（解决）</a><span>(2472)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7346263" title="中间件（EJB）学习路之一——步履维艰">中间件（EJB）学习路之一——步履维艰</a><span>(2210)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/8108482" title="spring定时任务 （二） 多个任务和执行时间间隔配置">spring定时任务 （二） 多个任务和执行时间间隔配置</a><span>(2062)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/8034464" title="左侧菜单渐入效果 jquery">左侧菜单渐入效果 jquery</a><span>(1998)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7023991" title="String s1=&quot;abc&quot;;与String s2=new String(&quot;abc&quot;);-关于Java栈与堆的思考">String s1=&quot;abc&quot;;与String s2=new String(&quot;abc&quot;);-关于Java栈与堆的思考</a><span>(1927)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/5317460" title="vb.net datagridview导出到excel表">vb.net datagridview导出到excel表</a><span>(1780)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7433079" title="java.lang.NoSuchMethodError: org.hibernate.cfg.AnnotationConfiguration.setProperty解决方案">java.lang.NoSuchMethodError: org.hibernate.cfg.AnnotationConfiguration.setProperty解决方案</a><span>(1719)</span>
</li>
</ul>
</div>
<div id="hotarticls2" class="panel">
<ul class="panel_head"><span>评论排行</span></ul>
<ul class="panel_body itemlist">
<li>
<a href="/sundenskyqq/article/details/7162782" title="提高班总结--菜鸟成长路">提高班总结--菜鸟成长路</a><span>(30)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7421686" title="感谢米老师，感谢提高班，做个骄傲的自己">感谢米老师，感谢提高班，做个骄傲的自己</a><span>(20)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/6574415" title="用心做事，用爱做人">用心做事，用爱做人</a><span>(19)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7195252" title="Struts2+Spring3.0+Hibernate3.2框架搭建全程">Struts2+Spring3.0+Hibernate3.2框架搭建全程</a><span>(19)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7771537" title="POI根据模版导出word">POI根据模版导出word</a><span>(17)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/6799038" title="springMVC 注解方式实现全程+文件上传">springMVC 注解方式实现全程+文件上传</a><span>(16)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7109851" title="2011年度总结">2011年度总结</a><span>(16)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7287749" title="几个小想法——不专心">几个小想法——不专心</a><span>(15)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/7259863" title="OA系统小结">OA系统小结</a><span>(12)</span>
</li>
<li>
<a href="/sundenskyqq/article/details/8150244" title="人生这七年（航向）">人生这七年（航向）</a><span>(12)</span>
</li>
</ul>
</div>
<div id="homepageArticles" class="panel tracking-ad" data-mod="popu_4">
<ul class="panel_head"><span>推荐文章</span></ul>
<ul class="panel_body" id="ad_commend"></ul>
</div>
<script type="text/javascript">
 new Ad(12, 'ad_commend');
</script><div id="newcomments" class="panel">
<ul class="panel_head"><span>最新评论</span></ul>
<ul class="panel_body itemlist">
    <li>
    <a href="/sundenskyqq/article/details/7483724#comments">Spring+struts+ejb(一）</a>
    <p style="margin:0px;"><a href="/tcl_6666" class="user_name">tcl_6666</a>:
用到了
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/14145315#comments">项目管理师——成本管理</a>
    <p style="margin:0px;"><a href="/lfmilaoshi" class="user_name">lfmilaoshi</a>:
管理的基本功。
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/14145315#comments">项目管理师——成本管理</a>
    <p style="margin:0px;"><a href="/sundenskyqq" class="user_name">sundenskyqq</a>:
@lmdcszh:呵呵。是呗。。。
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/14145315#comments">项目管理师——成本管理</a>
    <p style="margin:0px;"><a href="/lmdcszh" class="user_name">lmdcszh</a>:
这是准备当经理的节奏么？呵呵~~
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/13169015#comments">项目管理师——整合管理</a>
    <p style="margin:0px;"><a href="/lfmilaoshi" class="user_name">lfmilaoshi</a>:
这些都是积累。
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/13697247#comments">项目管理师——范围管理</a>
    <p style="margin:0px;"><a href="/lfmilaoshi" class="user_name">lfmilaoshi</a>:
这里只是对这些知识和罗列，我还在期盼一些升华的思想。
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/7771537#comments">POI根据模版导出word</a>
    <p style="margin:0px;"><a href="/janch1" class="user_name">janch1</a>:
求一份源码，谢了，281523591@qq.com
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/12871579#comments">项目管理师——立项管理</a>
    <p style="margin:0px;"><a href="/lfmilaoshi" class="user_name">lfmilaoshi</a>:
恭喜你，职位提高了。
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/7195252#comments">Struts2+Spring3.0+Hibernate3.2框架搭建全程</a>
    <p style="margin:0px;"><a href="/smszhuang168" class="user_name">smszhuang168</a>:
不错哈
    </p>
    </li>
    <li>
    <a href="/sundenskyqq/article/details/10382815#comments">你真的了解中英文字符么--str.length()与str.getBytes().length的区别</a>
    <p style="margin:0px;"><a href="/qhs1573" class="user_name">qhs1573</a>:
难道是博主在不同编码集的系统上编译得出的结果？同一个系统编码集相同的没编译出两种结果。不耻下问请多多...
    </p>
    </li>
</ul>
</div>
    </div>
    <div class="clear">
    </div>
</div>

            <div class="clear">
            </div>
        </div>
        

<script type="text/javascript" src="http://static.blog.csdn.net/scripts/newblog.min.js"></script>
<script type="text/javascript" src="http://medal.blog.csdn.net/showblogmedal.ashx?blogid=589581"></script>
<script type="text/javascript">
    document.write('<script type="text/javascript" src="http://csdnimg.cn/pubfooter/js/publib_footer.js?' + Math.floor(new Date() / 120000).toString(36) + '="></' + 'script>');
</script>
    <script type="text/javascript" src="http://pass.csdn.net/content/loginbox/login.js"></script>
<script type="text/javascript">document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</script>
<script type="text/javascript" src="http://www.csdn.net/ui/scripts/Csdn/counter.js"></script>
<script type="text/javascript" src="http://ad.csdn.net/scripts/ad-blog.js"></script>
<script type="text/javascript" src="http://zz.csdn.net/js/count.js"></script>
<script type="text/javascript">
    $(function () {
        function __get_code_toolbar(snippet_id) {
            return $("<a href='https://code.csdn.net/snippets/"
                    + snippet_id
                    + "' target='_blank' title='在CODE上查看代码片' style='text-indent:0;'><img src='https://code.csdn.net/assets/CODE_ico.png' width=12 height=12 alt='在CODE上查看代码片' style='position:relative;top:1px;left:2px;'/></a>"
                    + "<a href='https://code.csdn.net/snippets/"
                    + snippet_id
                    + "/fork' target='_blank' title='派生到我的代码片'  style='text-indent:0;'><img src='https://code.csdn.net/assets/ico_fork.svg' width=12 height=12 alt='派生到我的代码片' style='position:relative;top:2px;left:2px;'/></a>");
        }
        
        $("[code_snippet_id]").each(function () {
            __s_id = $(this).attr("code_snippet_id");
            if (__s_id != null && __s_id != "" && __s_id != 0 && parseInt(__s_id) > 70020) {
                __code_tool = __get_code_toolbar(__s_id);
                $(this).prev().find(".tools").append(__code_tool);
            }
        });
    });
</script>

    </div>
</body>
</html>
